package com.me.crgame.transiciones;

import static com.badlogic.gdx.scenes.scene2d.actions.Actions.sequence;

import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.audio.Sound;
import com.badlogic.gdx.math.Interpolation;
import com.badlogic.gdx.scenes.scene2d.Action;
import com.badlogic.gdx.scenes.scene2d.actions.Actions;
import com.me.crgame.core.Director;
import com.me.crgame.core.Transicion;
import com.me.crgame.core.actores.ActorLabel;


public class TransicionCompuertas extends Transicion {

	ActorLabel mitadSuperior;
	ActorLabel mitadInferior;

	Sound sonidoCierre;
	Sound sonidoApertura;

	public TransicionCompuertas() {
		super();
		
		
		int alto = (int)super.getHeight();

		mitadSuperior = new ActorLabel("data/sistema_menus/transiciones/sup.png");
		mitadSuperior.setX(0);
		mitadSuperior.setY(alto);
		
		
		mitadInferior = new ActorLabel("data/sistema_menus/transiciones/inf.png");
		mitadInferior.setX(0);
		mitadInferior.setY(-(alto/2));

		super.addActor(mitadSuperior);
		super.addActor(mitadInferior);

		sonidoCierre = Gdx.audio.newSound(Gdx.files
				.internal("data/sistema_menus/transiciones/close.mp3"));
		sonidoApertura = Gdx.audio.newSound(Gdx.files
				.internal("data/sistema_menus/transiciones/open.mp3"));
	}

	@Override
	protected void empiezaLaEscena(int transitionMode) {
		
		
		
		int alto = (int)super.getHeight();	
		
		if (transitionMode == 1) {

			sonidoCierre.play(1);

			float duracion = 3.2f;
			Action moveDown = Actions.moveTo(mitadSuperior.getX(),
					mitadSuperior.getY() - (float)(alto/2), duracion, Interpolation.circle);

			mitadSuperior.addAction(sequence(moveDown, new Action() {
				@Override
				public boolean act(float delta) {
					// Cuando finalmente el fondo de la pantalla desaparezca
					// se cambiara de screen
					Director.getInstance().transicionFinalizada(1);
					return true;
				}
			}));

			Action moveUp = Actions.moveTo(mitadInferior.getX(),
					mitadInferior.getY() + (float)(alto/2), duracion, Interpolation.circle);
			mitadInferior.addAction(moveUp);

		}

		if (transitionMode == 2) {
			sonidoApertura.play(1);
			float duracion = 3.2f;
			Action moveUp = Actions.moveTo(mitadSuperior.getX(),
					mitadSuperior.getY() + (float)(alto/2), duracion, Interpolation.bounceOut);
			mitadSuperior.addAction(sequence(moveUp, new Action() {
				@Override
				public boolean act(float delta) {
					// Cuando finalmente el fondo de la pantalla desaparezca
					// se cambiara de screen
					Director.getInstance().transicionFinalizada(2);
					return true;
				}
			}));

			Action moveDown = Actions.moveTo(mitadInferior.getX(),
					mitadInferior.getY() - (float)(alto/2), duracion, Interpolation.bounceOut);
			mitadInferior.addAction(moveDown);

		}

	}

	@Override
	protected void pause(boolean gamePaused) {
		// TODO Auto-generated method stub

	}

	@Override
	protected void update(float deltaTime) {
		// TODO Auto-generated method stub

	}

}
